
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
	<title>YUI Library Examples: Test: Simple Testing Example</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    	<link rel="stylesheet" type="text/css" href="../../assets/yui.css" >

<style>
    /*Supplemental CSS for the YUI distribution*/
    #custom-doc { width: 95%; min-width: 950px; }
    #pagetitle {background-image: url(../../assets/bg_hd.gif);}
/*    #pagetitle h1 {background-image: url(../../assets/title_h_bg.gif);}*/
</style>

<link rel="stylesheet" type="text/css" href="../../assets/dpSyntaxHighlighter.css">
<link type="text/css" rel="stylesheet" href="../../build/cssfonts/fonts-min.css" />
<script type="text/javascript" src="../../build/yui/yui-min.js"></script>
<style type="text/css">
#testLogger {
    margin-bottom: 1em;
}

#testLogger .yui3-console .yui3-console-title {
    border: 0 none;
    color: #000;
    font-size: 13px;
    font-weight: bold;
    margin: 0;
    text-transform: none;
}
#testLogger .yui3-console .yui3-console-entry-meta {
    margin: 0;
}

.yui3-skin-sam .yui3-console-entry-pass .yui3-console-entry-cat {
    background: #070;
    color: #fff;
}
</style>

</head>
<body id="yahoo-com" class="yui3-skin-sam  yui-skin-sam">
<div id="custom-doc" class="yui-t2">
<div id="hd">
	<div id="ygunav">
		<p>
            <em>
                <a href="http://developer.yahoo.com/yui/3/">YUI 3.x Home</a> <i> - </i>	
            </em>
		</p>
		<form action="http://search.yahoo.com/search" id="sitesearchform">
            <input name="vs" type="hidden" value="developer.yahoo.com">
            <input name="vs" type="hidden" value="yuiblog.com">
		    <div id="sitesearch">
		    	<label for="searchinput">Site Search (YDN &amp; YUIBlog): </label>
			    <input type="text" id="searchinput" name="p">
			    <input type="submit" value="Search" id="searchsubmit" class="ygbt">
		    </div>
		</form>
    </div>
	<div id="ygma"><a href="../../"><img src="../../assets/logo.gif"  border="0" width="200" height="93"></a></div>
	<div id="pagetitle"><h1>YUI Library Examples: Test: Simple Testing Example</h1></div>
</div>
<div id="bd">


	<div id="yui-main">
		<div class="yui-b">
		  <div class="yui-ge">
			  <div class="yui-u first example" id="main">

	<h2>Test: Simple Testing Example</h2>

	<div id="example" class="promo">
	<div class="example-intro">
	<p>This example shows basic usage of the YUI Test framework for testing browser-based JavaScript code. 
  Two different <a href="/yui/test/#testcase"><code>TestCase</code></a> objects are created and added to a
  <a href="/yui/test/#testsuite"><code>TestSuite</code></a> object. The <a href="/yui/test/#testrunner"><code>TestRunner</code></a>
  is then used to run the tests once the page has loaded.</p>	</div>	

	<div class="module example-container ">
			<div class="hd exampleHd">
			<p class="newWindowButton yui-skin-sam">
                <a href="test-simple-example_clean.html" target="_blank">View example in new window.</a>
            </p>
		</div>		<div id="example-canvas" class="bd">

		
	<!--BEGIN SOURCE CODE FOR EXAMPLE =============================== -->
	
	<div id="testLogger"></div>
<script type="text/javascript">
YUI().use("node", "console", "test",function (Y) {

    Y.namespace("example.test");
    
    Y.example.test.DataTestCase = new Y.Test.Case({
    
        //name of the test case - if not provided, one is auto-generated
        name : "Data Tests",
        
        //---------------------------------------------------------------------
        // setUp and tearDown methods - optional
        //---------------------------------------------------------------------
        
        /*
         * Sets up data that is needed by each test.
         */
        setUp : function () {
            this.data = {
                name: "test",
                year: 2007,
                beta: true
            };
        },
        
        /*
         * Cleans up everything that was created by setUp().
         */
        tearDown : function () {
            delete this.data;
        },
        
        //---------------------------------------------------------------------
        // Test methods - names must begin with "test"
        //---------------------------------------------------------------------
        
        testName : function () {
            var Assert = Y.Assert;
            
            Assert.isObject(this.data);
            Assert.isString(this.data.name);
            Assert.areEqual("test", this.data.name);            
        },
        
        testYear : function () {
            var Assert = Y.Assert;
            
            Assert.isObject(this.data);
            Assert.isNumber(this.data.year);
            Assert.areEqual(2007, this.data.year);            
        },
        
        testBeta : function () {
            var Assert = Y.Assert;
            
            Assert.isObject(this.data);
            Assert.isBoolean(this.data.beta);
            Assert.isTrue(this.data.beta);
        }
    
    });
    
    Y.example.test.ArrayTestCase = new Y.Test.Case({
    
        //name of the test case - if not provided, one is auto-generated
        name : "Array Tests",
        
        //---------------------------------------------------------------------
        // setUp and tearDown methods - optional
        //---------------------------------------------------------------------
        
        /*
         * Sets up data that is needed by each test.
         */
        setUp : function () {
            this.data = [0,1,2,3,4]
        },
        
        /*
         * Cleans up everything that was created by setUp().
         */
        tearDown : function () {
            delete this.data;
        },
        
        //---------------------------------------------------------------------
        // Test methods - names must begin with "test"
        //---------------------------------------------------------------------
        
        testPop : function () {
            var Assert = Y.Assert;
            
            var value = this.data.pop();
            
            Assert.areEqual(4, this.data.length);
            Assert.areEqual(4, value);            
        },        
        
        testPush : function () {
            var Assert = Y.Assert;
            
            this.data.push(5);
            
            Assert.areEqual(6, this.data.length);
            Assert.areEqual(5, this.data[5]);            
        },
        
        testSplice : function () {
            var Assert = Y.Assert;
            
            this.data.splice(2, 1, 6, 7);
            
            Assert.areEqual(6, this.data.length);
            Assert.areEqual(6, this.data[2]);           
            Assert.areEqual(7, this.data[3]);           
        }
    
    });    

    Y.example.test.ExampleSuite = new Y.Test.Suite("Example Suite");
    Y.example.test.ExampleSuite.add(Y.example.test.DataTestCase);
    Y.example.test.ExampleSuite.add(Y.example.test.ArrayTestCase);

    //create the console
    var r = new Y.Console({
        newestOnTop : false,
        style: 'block' // to anchor in the example content
    });
    
    r.render('#testLogger');
    
    Y.Test.Runner.add(Y.example.test.ExampleSuite);

    //run the tests
    Y.Test.Runner.run();

});
</script>
	
	<!--END SOURCE CODE FOR EXAMPLE =============================== -->
	
		
		</div>
	</div>			
	</div>
		
	<h2 class="first">Simple Test Example</h2>

<p>This example begins by creating a namespace:</p>
<div id="syntax-3d4df2a7089e8983130fe6d3e139fbb7" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1">Y.<span class="kw2">namespace</span><span class="br0">&#40;</span><span class="st0">&quot;example.test&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;">Y.<span class="kw2">namespace</span><span class="br0">&#40;</span><span class="st0">&quot;example.test&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax-3d4df2a7089e8983130fe6d3e139fbb7-plain">Y.namespace("example.test");</textarea></div><p>This namespace serves as the core object upon which others will be added (to prevent creating global objects).</p>

<h3>Creating the first TestCase</h3>

<p>The first step is to create a new <code>Y.Test.Case</code> object called <code>DataTestCase</code>.
  To do so, using the <code>Y.Test.Case</code> constructor and pass in an object literal containing information about the tests to be run:</p>
<div id="syntax-4bbce55887bb3595f2518c68db92cf0b" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1">Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">DataTestCase</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Test</span>.<span class="kw1">Case</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="co1">//name of the test case - if not provided, one is auto-generated</span></div></li><li class="li1"><div class="de1">    <span class="kw3">name</span> <span class="sy0">:</span> <span class="st0">&quot;Data Tests&quot;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li1"><div class="de1">    <span class="co1">// setUp and tearDown methods - optional</span></div></li><li class="li1"><div class="de1">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">    <span class="coMULTI">/*</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    * Sets up data that is needed by each test.</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    */</span></div></li><li class="li1"><div class="de1">    setUp <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw1">this</span>.<span class="me1">data</span> <span class="sy0">=</span> <span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">            <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;test&quot;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">            year<span class="sy0">:</span> <span class="nu0">2007</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">            beta<span class="sy0">:</span> <span class="kw2">true</span></div></li><li class="li1"><div class="de1">        <span class="br0">&#125;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="coMULTI">/*</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    * Cleans up everything that was created by setUp().</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    */</span></div></li><li class="li1"><div class="de1">    tearDown <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">        <span class="kw1">delete</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li1"><div class="de1">    <span class="co1">// Test methods - names must begin with &quot;test&quot;</span></div></li><li class="li2"><div class="de2">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    testName <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">        Assert.<span class="me1">isObject</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">isString</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="kw3">name</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="st0">&quot;test&quot;</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="kw3">name</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">    testYear <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">        Assert.<span class="me1">isObject</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">isNumber</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">year</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">2007</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">year</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    testBeta <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">        Assert.<span class="me1">isObject</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">isBoolean</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">beta</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">isTrue</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">beta</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;">Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">DataTestCase</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Test</span>.<span class="kw1">Case</span><span class="br0">&#40;</span><span class="br0">&#123;</span>
&nbsp;
    <span class="co1">//name of the test case - if not provided, one is auto-generated</span>
    <span class="kw3">name</span> <span class="sy0">:</span> <span class="st0">&quot;Data Tests&quot;</span><span class="sy0">,</span>
&nbsp;
    <span class="co1">//---------------------------------------------------------------------</span>
    <span class="co1">// setUp and tearDown methods - optional</span>
    <span class="co1">//---------------------------------------------------------------------</span>
&nbsp;
    <span class="coMULTI">/*
     * Sets up data that is needed by each test.
     */</span>
    setUp <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">this</span>.<span class="me1">data</span> <span class="sy0">=</span> <span class="br0">&#123;</span>
            <span class="kw3">name</span><span class="sy0">:</span> <span class="st0">&quot;test&quot;</span><span class="sy0">,</span>
            year<span class="sy0">:</span> <span class="nu0">2007</span><span class="sy0">,</span>
            beta<span class="sy0">:</span> <span class="kw2">true</span>
        <span class="br0">&#125;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    <span class="coMULTI">/*
     * Cleans up everything that was created by setUp().
     */</span>
    tearDown <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">delete</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    <span class="co1">//---------------------------------------------------------------------</span>
    <span class="co1">// Test methods - names must begin with &quot;test&quot;</span>
    <span class="co1">//---------------------------------------------------------------------</span>
&nbsp;
    testName <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span>
&nbsp;
        Assert.<span class="me1">isObject</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Assert.<span class="me1">isString</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="kw3">name</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="st0">&quot;test&quot;</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="kw3">name</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    testYear <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span>
&nbsp;
        Assert.<span class="me1">isObject</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Assert.<span class="me1">isNumber</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">year</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">2007</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">year</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    testBeta <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span>
&nbsp;
        Assert.<span class="me1">isObject</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Assert.<span class="me1">isBoolean</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">beta</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Assert.<span class="me1">isTrue</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">beta</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax-4bbce55887bb3595f2518c68db92cf0b-plain">Y.example.test.DataTestCase = new Y.Test.Case({

    //name of the test case - if not provided, one is auto-generated
    name : "Data Tests",

    //---------------------------------------------------------------------
    // setUp and tearDown methods - optional
    //---------------------------------------------------------------------

    /*
     * Sets up data that is needed by each test.
     */
    setUp : function () {
        this.data = {
            name: "test",
            year: 2007,
            beta: true
        };
    },

    /*
     * Cleans up everything that was created by setUp().
     */
    tearDown : function () {
        delete this.data;
    },

    //---------------------------------------------------------------------
    // Test methods - names must begin with "test"
    //---------------------------------------------------------------------

    testName : function () {
        var Assert = Y.Assert;

        Assert.isObject(this.data);
        Assert.isString(this.data.name);
        Assert.areEqual("test", this.data.name);
    },

    testYear : function () {
        var Assert = Y.Assert;

        Assert.isObject(this.data);
        Assert.isNumber(this.data.year);
        Assert.areEqual(2007, this.data.year);
    },

    testBeta : function () {
        var Assert = Y.Assert;

        Assert.isObject(this.data);
        Assert.isBoolean(this.data.beta);
        Assert.isTrue(this.data.beta);
    }

});</textarea></div><p>The object literal passed into the constructor contains a number of different sections. The first section contains the <code>name</code> property,
  which is used to determine which <code>Y.Test.Case</code> is being executed. A name is necessary, so one is generated if it isn't specified.</p>
<p>Next, the <code>setUp()</code> and <code>tearDown()</code> methods are included. The <code>setUp()</code> method is used in a <code>Y.Test.Case</code>
  to set up data that may be needed for tests to be completed. This method is called immediately before each test is executed. For this example,
  <code>setUp()</code> creates a data object. The <code>tearDown()</code> is responsible for undoing what was done in <code>setUp()</code>. It is
  run immediately after each test is run and, in this case, deletes the data object that was created by <code>setUp</code>. These methods are optional.</p>
<p>The last section contains the actual tests to be run. Test method names must always begin with the word &quot;test&quot; (all lowercase) in order
  to differentiate them from other methods that may be added to the object.</p>
<p>The first test in this object is <code>testName()</code>, which runs
  various assertions on <code>data.name</code>. Inside of this method, a shortcut to <code>Y.Assert</code> is set up and used to run three
  assertions: <code>isObject()</code> on <code>data</code>, <code>isString()</code> on <code>data.name</code> and <code>areEqual()</code> to compare
  <code>data.name</code> to the expected value, &quot;test&quot;. These assertions are arranged in order from least-specific to most-specific,
  which is the recommended way to arrange your assertions. Basically, the third assertion is useless to run unless the second has passes and the second
  can't possibly pass unless the first passed. Both <code>isObject()</code> and <code>isString()</code> accept a single argument, which is the value
  to test (you could optionally include a failure message as a second argument, though this is not required). The <code>areEqual()</code> method
  expects two arguments, the first being the expected value (&quot;test&quot;) and the second being the actual value (<code>data.name</code>).</p>
<p>The second and third tests follow the same pattern as the first with the exception that they work with different data types. The <code>testYear()</code>
  method works with <code>data.year</code>, which is a number and so runs tests specifically for numbers (<code>areEqual()</code> can be used with
  all data types). The <code>testBeta()</code> method works with <code>data.beta</code>, which is a Boolean, and so it uses the <code>isTrue()</code>
  assertion instead of <code>areEqual()</code> (though it could also use <code>areEqual(true, this.data.beta)</code>).</p>

 <h3>Creating the second TestCase</h3>

 <p>Although it's possible that you'll have only one <code>Y.Test.Case</code> object, typically there is more than one, and so this example includes
   a second <code>Y.Test.Case</code>. This one tests some of the built-in functions of the <code>Array</code> object:</p>
 <div id="syntax-033d1fced459c1937a11fa9336f1e579" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1"> Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ArrayTestCase</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Test</span>.<span class="kw1">Case</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="co1">//name of the test case - if not provided, one is auto-generated</span></div></li><li class="li1"><div class="de1">    <span class="kw3">name</span> <span class="sy0">:</span> <span class="st0">&quot;Array Tests&quot;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li1"><div class="de1">    <span class="co1">// setUp and tearDown methods - optional</span></div></li><li class="li1"><div class="de1">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">    <span class="coMULTI">/*</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    * Sets up data that is needed by each test.</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    */</span></div></li><li class="li1"><div class="de1">    setUp <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw1">this</span>.<span class="me1">data</span> <span class="sy0">=</span> <span class="br0">&#91;</span><span class="nu0">0</span><span class="sy0">,</span><span class="nu0">1</span><span class="sy0">,</span><span class="nu0">2</span><span class="sy0">,</span><span class="nu0">3</span><span class="sy0">,</span><span class="nu0">4</span><span class="br0">&#93;</span></div></li><li class="li2"><div class="de2">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="coMULTI">/*</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    * Cleans up everything that was created by setUp().</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;    */</span></div></li><li class="li2"><div class="de2">    tearDown <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw1">delete</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li2"><div class="de2">    <span class="co1">// Test methods - names must begin with &quot;test&quot;</span></div></li><li class="li1"><div class="de1">    <span class="co1">//---------------------------------------------------------------------</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    testPop <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> value <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">pop</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">4</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">4</span><span class="sy0">,</span> value<span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">    testPush <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">        <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">push</span><span class="br0">&#40;</span><span class="nu0">5</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">6</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">5</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#91;</span><span class="nu0">5</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">    testSplice <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">        <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">splice</span><span class="br0">&#40;</span><span class="nu0">2</span><span class="sy0">,</span> <span class="nu0">1</span><span class="sy0">,</span> <span class="nu0">6</span><span class="sy0">,</span> <span class="nu0">7</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">6</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">6</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">7</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">    <span class="br0">&#125;</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;"> Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ArrayTestCase</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Test</span>.<span class="kw1">Case</span><span class="br0">&#40;</span><span class="br0">&#123;</span>
&nbsp;
    <span class="co1">//name of the test case - if not provided, one is auto-generated</span>
    <span class="kw3">name</span> <span class="sy0">:</span> <span class="st0">&quot;Array Tests&quot;</span><span class="sy0">,</span>
&nbsp;
    <span class="co1">//---------------------------------------------------------------------</span>
    <span class="co1">// setUp and tearDown methods - optional</span>
    <span class="co1">//---------------------------------------------------------------------</span>
&nbsp;
    <span class="coMULTI">/*
     * Sets up data that is needed by each test.
     */</span>
    setUp <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">this</span>.<span class="me1">data</span> <span class="sy0">=</span> <span class="br0">&#91;</span><span class="nu0">0</span><span class="sy0">,</span><span class="nu0">1</span><span class="sy0">,</span><span class="nu0">2</span><span class="sy0">,</span><span class="nu0">3</span><span class="sy0">,</span><span class="nu0">4</span><span class="br0">&#93;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    <span class="coMULTI">/*
     * Cleans up everything that was created by setUp().
     */</span>
    tearDown <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw1">delete</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    <span class="co1">//---------------------------------------------------------------------</span>
    <span class="co1">// Test methods - names must begin with &quot;test&quot;</span>
    <span class="co1">//---------------------------------------------------------------------</span>
&nbsp;
    testPop <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span>
&nbsp;
        <span class="kw2">var</span> value <span class="sy0">=</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">pop</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">4</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">4</span><span class="sy0">,</span> value<span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    testPush <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span>
&nbsp;
        <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">push</span><span class="br0">&#40;</span><span class="nu0">5</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">6</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">5</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#91;</span><span class="nu0">5</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span><span class="sy0">,</span>
&nbsp;
    testSplice <span class="sy0">:</span> <span class="kw2">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
        <span class="kw2">var</span> Assert <span class="sy0">=</span> Y.<span class="me1">Assert</span><span class="sy0">;</span>
&nbsp;
        <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">splice</span><span class="br0">&#40;</span><span class="nu0">2</span><span class="sy0">,</span> <span class="nu0">1</span><span class="sy0">,</span> <span class="nu0">6</span><span class="sy0">,</span> <span class="nu0">7</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">6</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span>.<span class="me1">length</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">6</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
        Assert.<span class="me1">areEqual</span><span class="br0">&#40;</span><span class="nu0">7</span><span class="sy0">,</span> <span class="kw1">this</span>.<span class="me1">data</span><span class="br0">&#91;</span><span class="nu0">3</span><span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span>
    <span class="br0">&#125;</span>
&nbsp;
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax-033d1fced459c1937a11fa9336f1e579-plain"> Y.example.test.ArrayTestCase = new Y.Test.Case({

    //name of the test case - if not provided, one is auto-generated
    name : "Array Tests",

    //---------------------------------------------------------------------
    // setUp and tearDown methods - optional
    //---------------------------------------------------------------------

    /*
     * Sets up data that is needed by each test.
     */
    setUp : function () {
        this.data = [0,1,2,3,4]
    },

    /*
     * Cleans up everything that was created by setUp().
     */
    tearDown : function () {
        delete this.data;
    },

    //---------------------------------------------------------------------
    // Test methods - names must begin with "test"
    //---------------------------------------------------------------------

    testPop : function () {
        var Assert = Y.Assert;

        var value = this.data.pop();

        Assert.areEqual(4, this.data.length);
        Assert.areEqual(4, value);
    },

    testPush : function () {
        var Assert = Y.Assert;

        this.data.push(5);

        Assert.areEqual(6, this.data.length);
        Assert.areEqual(5, this.data[5]);
    },

    testSplice : function () {
        var Assert = Y.Assert;

        this.data.splice(2, 1, 6, 7);

        Assert.areEqual(6, this.data.length);
        Assert.areEqual(6, this.data[2]);
        Assert.areEqual(7, this.data[3]);
    }

});</textarea></div> <p>As with the first <code>Y.Test.Case</code>, this one is split up into three sections: the name, the <code>setUp()</code> and <code>tearDown()</code>
  methods, and the test methods. The <code>setUp()</code> method in this <code>Y.Test.Case</code> creates an array of data to be used by the various
  tests while the <code>tearDown()</code> method destroys the array. The test methods are very simple, testing the <code>pop()</code>, <code>push()</code>,
  and <code>splice()</code> methods. Each test method uses <code>areEqual()</code> exclusively, to show the different ways that it can be used.
  The <code>testPop()</code> method calls <code>pop()</code> on the array of values, then verifies that the length of the array has changed and
  that the value popped off is 4; the <code>testPush()</code> pushes a new value (5) onto the array and then verifies that the length of the array has
  changed and that the value is included in the correct location; the <code>testSplice()</code> method tests  <code>splice()</code> by removing one
  value that's already in the array and inserting two in its place.</p>

<h3>Creating the TestSuite</h3>
<p>To better organize the two <code>Y.Test.Case</code> objects, a <code>Y.Test.Suite</code> is created and those two <code>Y.Test.Case</code> objects are
  added to it:</p>
<div id="syntax-79d3e32d9886140042960974fc7c83b4" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1">Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Test</span>.<span class="me1">Suite</span><span class="br0">&#40;</span><span class="st0">&quot;Example Suite&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span>.<span class="me1">add</span><span class="br0">&#40;</span>Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">DataTestCase</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span>.<span class="me1">add</span><span class="br0">&#40;</span>Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ArrayTestCase</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;">Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span> <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Test</span>.<span class="me1">Suite</span><span class="br0">&#40;</span><span class="st0">&quot;Example Suite&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span>.<span class="me1">add</span><span class="br0">&#40;</span>Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">DataTestCase</span><span class="br0">&#41;</span><span class="sy0">;</span>
Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span>.<span class="me1">add</span><span class="br0">&#40;</span>Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ArrayTestCase</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax-79d3e32d9886140042960974fc7c83b4-plain">Y.example.test.ExampleSuite = new Y.Test.Suite("Example Suite");
Y.example.test.ExampleSuite.add(Y.example.test.DataTestCase);
Y.example.test.ExampleSuite.add(Y.example.test.ArrayTestCase);</textarea></div><p>The first line creates a new <code>Y.Test.Suite</code> object using its constructor, which accepts a single argument - the name of the suite. As with
  the name of a <code>Y.Test.Case</code>, the <code>Y.Test.Suite</code> name is used to determine where execution is when tests are being executed. Although
  not required (one is generated if it's not provided), it is recommended that you select a meaningful name to aid in debugging.</p>
<p>Any number of <code>Y.Test.Case</code> and <code>Y.Test.Suite</code> objects can be added to a <code>Y.Test.Suite</code> by using the <code>add()</code>
  method. In this example, the two <code>Y.Test.Case</code> objects created earlier are added to the <code>Y.Test.Suite</code>.</p>

<h3>Running the tests</h3>

<p>With all of the tests defined, the last step is to run them. This initialization is assigned to take place when all of the YUI
  components have been loaded:</p>

<div id="syntax-d3865240f5d4e0f91f80ad442f950ad5" class="yui-syntax-highlight"><div class="numbers"><pre class="javascript" style="font-family:monospace;"><ol><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">//create the console</span></div></li><li class="li1"><div class="de1"><span class="kw2">var</span> r <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Console</span><span class="br0">&#40;</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">    verbose <span class="sy0">:</span> <span class="kw2">true</span><span class="sy0">,</span></div></li><li class="li2"><div class="de2">    newestOnTop <span class="sy0">:</span> <span class="kw2">false</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">r.<span class="me1">render</span><span class="br0">&#40;</span><span class="st0">'#testLogger'</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">Y.<span class="me1">Test</span>.<span class="me1">Runner</span>.<span class="me1">add</span><span class="br0">&#40;</span>Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="co1">//run the tests</span></div></li><li class="li1"><div class="de1">Y.<span class="me1">Test</span>.<span class="me1">Runner</span>.<span class="me1">run</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></pre></div><div class="nonumbers"><pre class="javascript" style="font-family:monospace;">&nbsp;
<span class="co1">//create the console</span>
<span class="kw2">var</span> r <span class="sy0">=</span> <span class="kw2">new</span> Y.<span class="me1">Console</span><span class="br0">&#40;</span><span class="br0">&#123;</span>
    verbose <span class="sy0">:</span> <span class="kw2">true</span><span class="sy0">,</span>
    newestOnTop <span class="sy0">:</span> <span class="kw2">false</span>
<span class="br0">&#125;</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
r.<span class="me1">render</span><span class="br0">&#40;</span><span class="st0">'#testLogger'</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
Y.<span class="me1">Test</span>.<span class="me1">Runner</span>.<span class="me1">add</span><span class="br0">&#40;</span>Y.<span class="me1">example</span>.<span class="me1">test</span>.<span class="me1">ExampleSuite</span><span class="br0">&#41;</span><span class="sy0">;</span>
&nbsp;
<span class="co1">//run the tests</span>
Y.<span class="me1">Test</span>.<span class="me1">Runner</span>.<span class="me1">run</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div><textarea id="syntax-d3865240f5d4e0f91f80ad442f950ad5-plain">
//create the console
var r = new Y.Console({
    verbose : true,
    newestOnTop : false
});

r.render('#testLogger');

Y.Test.Runner.add(Y.example.test.ExampleSuite);

//run the tests
Y.Test.Runner.run();</textarea></div>
<p>Before running the tests, it's necessary to create a <code>Y.Console</code> object to display the results (otherwise the tests would run
  but you wouldn't see the results). After that, the <code>Y.Test.Runner</code> is loaded with the <code>Y.Test.Suite</code> object by calling
  <code>add()</code> (any number of <code>Y.Test.Case</code> and <code>Y.Test.Suite</code> objects can be added to a <code>Y.Test.Runner</code>,
  this example only adds one for simplicity). The very last step is to call <code>run()</code>, which begins executing the tests in its
  queue and displays the results in the <code>Y.Console</code>.</p>				</div>
				<div class="yui-u sidebar">
					
				
					<div id="examples" class="mod box4">
                        <div class="hd">
						<h4>
    Test Examples:</h4>
                        </div>
						<div class="bd">
							<ul>
								<li class='selected'><a href='../test/test-simple-example.html'>Simple Testing Example</a></li><li><a href='../test/test-advanced-test-options.html'>Advanced Test Options</a></li><li><a href='../test/test-array-tests.html'>Array Processing</a></li><li><a href='../test/test-async-test.html'>Asynchronous Testing</a></li><li><a href='../test/test-async-event-tests.html'>Asynchronous Event Testing</a></li>							</ul>
						</div>
					</div>
					
					<div class="mod box4">
                        <div class="hd">
						<h4>More Test Resources:</h4>
                        </div>
                        <div class="bd">
						<ul>
							<!-- <li><a href="http://developer.yahoo.com/yui/test/">User's Guide</a> (external)</li> -->
<li><a href="../../api/module_test.html">API Documentation</a></li></ul>
                        </div>
					</div>
			  </div>
		</div>
		
		</div>
	</div>


<div class="yui-b toc3" id="tocWrapper">
<!-- TABLE OF CONTENTS -->
<div id="toc">
	
<ul>
<li class="sect first">YUI 3 Resources</li><li class="item"><a title="YUI 3 -- Yahoo! User Interface (YUI) Library" href="http://developer.yahoo.com/yui/3/">YUI 3 Web Site</a></li><li class="item"><a title="Examples of every YUI utility and control in action" href="../../examples/">YUI 3 Examples</a></li><li class="item"><a title="Instantly searchable API documentation for the entire YUI library." href="../../api/">YUI 3 API Docs</a></li><li class="item"><a title="YUI 3 Dependency Configurator -- configure your custom YUI implementation" href="http://developer.yahoo.com/yui/3/configurator/index.html">YUI 3 Dependency Configurator</a></li><li class="item"><a title="The YUI 3 Forum on YUILibrary.com" href="http://yuilibrary.com/forum/viewforum.php?f=15">YUI 3 Forums (external)</a></li><li class="item"><a title="Found a bug or a missing feature? Let us know on YUILibrary.com." href="http://developer.yahoo.com/yui/articles/reportingbugs/">Bug Reports/Feature Requests</a></li><li class="item"><a title="YUI is free and open, offered under a BSD license." href="http://developer.yahoo.com/yui/license.html">YUI License</a></li><li class="item"><a title="Download and fork the YUI project on GitHub" href="http://github.com/yui">YUI on Github</a></li><li class="item"><a title="The Yahoo! User Interface Blog" href="http://yuiblog.com">YUI Blog (external)</a></li><li class="sect">YUI 3 Core - Examples</li><li class="item"><a title="YUI Global Object - Functional Examples" href="../../examples/yui/index.html">YUI Global Object</a></li><li class="item"><a title="Event - Functional Examples" href="../../examples/event/index.html">Event</a></li><li class="item"><a title="Node - Functional Examples" href="../../examples/node/index.html">Node</a></li><li class="sect">YUI 3 Component Infrastructure - Examples</li><li class="item"><a title="Attribute - Functional Examples" href="../../examples/attribute/index.html">Attribute</a></li><li class="item"><a title="Plugin - Functional Examples" href="../../examples/plugin/index.html">Plugin</a></li><li class="item"><a title="Widget - Functional Examples" href="../../examples/widget/index.html">Widget</a></li><li class="sect">YUI 3 Utilities - Examples</li><li class="item"><a title="Animation - Functional Examples" href="../../examples/anim/index.html">Animation</a></li><li class="item"><a title="AsyncQueue - Functional Examples" href="../../examples/async-queue/index.html">AsyncQueue</a></li><li class="item"><a title="Browser History - Functional Examples" href="../../examples/history/index.html">Browser History</a></li><li class="item"><a title="Cache - Functional Examples" href="../../examples/cache/index.html">Cache</a></li><li class="item"><a title="Cookie - Functional Examples" href="../../examples/cookie/index.html">Cookie</a></li><li class="item"><a title="DataSchema - Functional Examples" href="../../examples/dataschema/index.html">DataSchema <img alt='beta' src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="DataSource - Functional Examples" href="../../examples/datasource/index.html">DataSource <img alt='beta' src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="DataType - Functional Examples" href="../../examples/datatype/index.html">DataType <img alt='beta' src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Drag &amp; Drop - Functional Examples" href="../../examples/dd/index.html">Drag &amp; Drop</a></li><li class="item"><a title="Get - Functional Examples" href="../../examples/get/index.html">Get</a></li><li class="item"><a title="ImageLoader - Functional Examples" href="../../examples/imageloader/index.html">ImageLoader</a></li><li class="item"><a title="Internationalization - Functional Examples" href="../../examples/intl/index.html">Internationalization <img alt='beta' src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="IO - Functional Examples" href="../../examples/io/index.html">IO</a></li><li class="item"><a title="JSON (JavaScript Object Notation) - Functional Examples" href="../../examples/json/index.html">JSON</a></li><li class="item"><a title="Stylesheet - Functional Examples" href="../../examples/stylesheet/index.html">Stylesheet</a></li><li class="sect">YUI 3 Widgets - Examples</li><li class="item"><a title="Overlay - Functional Examples" href="../../examples/overlay/index.html">Overlay <img alt='beta' src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Slider - Functional Examples" href="../../examples/slider/index.html">Slider <img alt='beta' src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Tabview - Functional Examples" href="../../examples/tabview/index.html">Tabview <img alt='beta' src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="sect">YUI 3 Node Plugins - Examples</li><li class="item"><a title="FocusManager Node Plugin - Functional Examples" href="../../examples/node-focusmanager/index.html">FocusManager Node Plugin <img alt='beta' src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="MenuNav Node Plugin - Functional Examples" href="../../examples/node-menunav/index.html">MenuNav Node Plugin <img alt='beta' src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="sect">YUI 3 CSS - Examples</li><li class="item"><a title="YUI CSS Reset - Functional Examples" href="../../examples/cssreset/index.html">CSS Reset</a></li><li class="item"><a title="YUI Fonts - Functional Examples" href="../../examples/cssfonts/index.html">CSS Fonts</a></li><li class="item"><a title="YUI Base - Functional Examples" href="../../examples/cssbase/index.html">CSS Base</a></li><li class="sect">YUI 3 Developer Tools - Examples</li><li class="item"><a title="Console - Functional Examples" href="../../examples/console/index.html">Console <img alt='beta' src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Console Filters Plugin- Functional Examples" href="../../examples/console-filters/index.html">Plugin.ConsoleFilters <img alt='beta' src='http://l.yimg.com/a/i/not/beta_1.gif'></a></li><li class="item"><a title="Profiler - Functional Examples" href="../../examples/profiler/index.html">Profiler</a></li><li class="selected "><a title="Test - Functional Examples" href="../../examples/test/index.html">Test</a></li><li class="sect">Other Useful YUI 3 Resources</li><li class="item"><a title="Answers to Frequently Asked Questions about the YUI Library" href="http://developer.yahoo.com/yui/articles/faq/">YUI FAQ (external)</a></li><li class="item"><a title="Yahoo!'s philosophy of Graded Browser Support" href="http://developer.yahoo.com/yui/articles/gbs/">Graded Browser Support (external)</a></li><li class="item"><a title="Videos and podcasts from the YUI Team and from the Yahoo! frontend engineering community." href="http://developer.yahoo.com/yui/theater/">YUI Theater (external)</a></li></ul>
</div>
</div>
	</div><!--closes bd-->

	<div id="ft">
        <p class="first">Copyright &copy; 2010 Yahoo! Inc. All rights reserved.</p>
        <p><a href="http://privacy.yahoo.com/privacy/us/devel/index.html">Privacy Policy</a> - 
            <a href="http://docs.yahoo.com/info/terms/">Terms of Service</a> - 
            <a href="http://docs.yahoo.com/info/copyright/copyright.html">Copyright Policy</a> - 
            <a href="http://careers.yahoo.com/">Job Openings</a></p>
	</div>
</div>
<script language="javascript"> 
var yuiConfig = {};
</script>
<script src="../../assets/syntax.js"></script>
<script src="../../assets/dpSyntaxHighlighter.js"></script>
<script language="javascript"> 
dp.SyntaxHighlighter.HighlightAll('code'); 
</script>
</body>
</html>
